package br.com.Atv04.chico;

public class FuncionarioChefe extends Funcionario {

	private double valorInicial;
	private double gratificacao;
	private Funcionario assessor;

	public FuncionarioChefe() {
		super();
	}

	public FuncionarioChefe(String cpf, String nome, int idade, double valorInicial, double gratificacao, Funcionario assessor) throws AssessorInvalido {
		super(cpf, nome, idade, gratificacao + valorInicial);
		this.valorInicial = valorInicial;
		this.gratificacao = gratificacao;
		this.setAssessor(assessor);
	}

	public double getValorInicial() {
		return valorInicial;
	}

	public void setValorInicial(double valorInicial) {
		this.valorInicial = valorInicial;
	}

	public double getGratificacao() {
		return gratificacao;
	}

	public void setGratificacao(double gratificacao) {
		this.gratificacao = gratificacao;
	}

	public Funcionario getAssessor() {
		return assessor;
	}

	public void setAssessor(Funcionario assessor) throws AssessorInvalido {
		if (!(assessor instanceof FuncionarioChefe)
				&& !(assessor instanceof FuncionarioHorario)) {
			this.assessor = assessor;
		} else {
			System.out.println("erro");
			throw new AssessorInvalido("Assesor deve ser um Funcionario simples");
		}
	}

	@Override
	public double obterSalario() {
		return valorInicial + gratificacao;
	}

	@Override
	public String toString() {
		// if (assessor != null) {
		// return getCpf() + " - " + nome + ", " + getIdade() + " : "
		// + obterSalario() + " (FC) Assessor: " + assessor.getNome();
		// } else {
		// return getCpf() + " - " + nome + ", " + getIdade() + " : "
		// + obterSalario() + " (FC) Assessor: ";
		// }

		return getCpf() + " - " + nome + ", " + getIdade() + " : "
				+ obterSalario() + " (FC) Assessor: "
				+ (assessor != null ? assessor.getNome() : "");
	}
}
